R Notebook

  1. Crea un nuovo R Notebook e salvalo come “r-training-esercizi” all’interno della cartella di progetto (la cartella che contiene il tuo progetto R)

  2. Cambia il titolo del Notebook in “R training - Esercizi”

  3. D’ora in poi, fai ogni esercizio in un nuovo chunk di codice. Ricorda che puoi commentare ogni esercizio scrivendo del testo fuori dai chunk di codice. Ricorda che puoi anche inserire dei titoli scrivendo il testo fuori dai chunk preceduto da #.

Librerie

  1. (Ricorda di inserire un nuovo chunk di codice per ogni esercizio) Carica le librerie dplyr, ggplot e plotly
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

Importazione dei dati

  1. (Ricorda di inserire un nuovo chunk di codice per ogni esercizio) Importa il file “marvel-wikia-data.csv”
marvel_data <- read.csv("marvel-wikia-data.csv", 
                        na.string = "")

Domanda di ricerca 1 - Personaggi femminili e maschili

Vogliamo capire se i personaggi femminili hanno caratteristiche diverse dai personaggi maschili

Filter

  1. Crea il nuovo dataframe marvel_mf che contiene solo i personaggi di sesso maschile e di sesso femminile (suggerimento: controlla gli output della lezione 2 e ricorda che l’operazione logica “or” in R si fa con l’operatore | )
marvel_fm <- marvel_data %>%
  filter(SEX == "Male Characters" | SEX == "Female Characters")

Torta

  1. Rappresenta con un grafico a torta la distribuzione della variabile SEX del dataframe marvel_fm
ggplot(marvel_fm, aes(x = factor(1), fill = SEX)) +
  geom_bar() +
  coord_polar(theta = "y") +
  theme_void()

Barplot

  1. Rappresenta con un grafico a barre la distribuzione di personaggi buoni e cattivi (variabile ALIGN). Se vuoi, aggiusta i parametri grafici in modo che il grafico risulti più leggibile
ggplot(data=marvel_fm, aes(x = ALIGN)) +
  geom_bar() +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

  1. Modifica il grafico precedente in modo da mostrare, per ogni barra, la scomposizione per sesso
ggplot(data=marvel_fm, aes(x = ALIGN, fill = SEX)) +
  geom_bar() +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

  1. Modifica il grafico precedente in modo che mostri, per ogni barra, la composizione percentuale per sesso. Ti sembra che maschi e femmine siano equamente distribuiti tra personaggi buoni e cattivi?
bar <- ggplot(data=marvel_fm, aes(x = ALIGN, fill = SEX)) +
  geom_bar(position = "fill") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

bar

Barplot interattivo

  1. Trasforma l’ultimo grafico creato in un grafico interattivo utilizzando la funzione ggplotly()
ggplotly(bar)

Domanda di ricerca 2 - Creazione dei personaggi più famosi

Vogliamo verificare la relazione tra anno di prima apparizione di un personaggio (variabile Year) e numero di apparizioni (variabile APPEARANCES). In particolare vogliamo capire se i personaggi più famosi (con numero di apparizioni elevate) sono stati creati in vari momenti nel tempo, o se la loro nascita è concentrati in uno o più specifici periodi.

Scatterplot

  1. Crea uno scatterplot che metta in relazione l’anno di prima apparizione di un personaggio (variabile Year) con il numero di apparizioni. Utilizza l’estetica color per colorare i punti in base all’allineamento del personaggio (se buono o cattivo, variabile ALIGN). Se vuoi, per rendere la computazione meno pesante, filtra solo le osservazioni con più di 150 apparizioni.
scatter <- ggplot(marvel_data %>% filter(APPEARANCES > 150), 
       aes(x = Year, y = APPEARANCES,
                      color = ALIGN)) +
         geom_point()

scatter
## Warning: Removed 5 rows containing missing values (geom_point).

Scatterplot interattivo

  1. Trasforma lo scatterplot in un grafico interattivo. Visualizza nel tooltip il nome di ogni personaggio utilizzando l’estetica text.
ggplotly(scatter)

Aggregazioni

  1. Costruisci una tabella di sintesi che calcoli, per ogni anno, il numero medio di apparizioni (suggerimento: devi raggruppare per anno e calcolare la media di appearances. Ricorda di utilizzare il parametro na.rm=T per fare in modo che la media sia calcolabile nonostante le osservazioni mancanti)
app_av_data <- marvel_data %>%
  group_by(Year) %>%
  summarise(avg_app = mean(APPEARANCES, na.rm = T))

Scatterplot su tabella aggregata

  1. Utilizza la tabella appena creata per rappresentare in uno scatterplot i valori ottenuti (suggerimento: dovrai utilizzare la variabile Year nell’asse X e la variabile creata col summarise nell’asse Y). Ti sembra che la relazione sia costante nel tempo?
ggplot(app_av_data, aes(x = Year, y = avg_app)) +
  geom_point()
## Warning: Removed 1 rows containing missing values (geom_point).

Compilazione in html

  1. Compila tutto il lavoro svolto in un report html. Funziona? I grafici sono interattivi? Sei soddisfatto dei titoli e dei commenti? Modifica eventualmente quello che non ti piace e se vuoi manda tutto a mariachiara.fortuna1@gmail.com :)